import axios from 'axios'

// 进度条
import nprogress from 'nprogress'
import 'nprogress/nprogress.css';
import store from '@/store/index.js'
//
import {
    Message
} from 'element-ui'

const requests = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 20000
})


//请求拦截器：再发请求之前，请求拦截器可以检查到，可以在请求发出去之前做一些事情
requests.interceptors.request.use(config => {
    nprogress.start()
    // 请求头
    if (store.state.token) {
        config.headers.Authorization  = store.state.token;
    }
    return config
}), err => {
    return Promise.reject(err)
}

//响应拦截器
requests.interceptors.response.use(res => {
    nprogress.done()
    //0 为成功状态
    if (res.data.code != 200) {
        //90001 Session超时
        if (res.data.code === 90001) {
            return Promise.reject('error');
        }
        //20001 用户未登录
        if (res.data.code === 90002) {
            Message({
                type: 'warning',
                showClose: true,
                message: '未登录或登录超时，请重新登录哦'
            })
            localStorage.removeItem("TOKEN")
            window.location.href = '/login';
            return Promise.reject('error');
        }

        //70001 权限认证错误
        if (res.data.code === 70001) {
            console.info("权限认证错误")
            Message({
                type: 'warning',
                showClose: true,
                message: '你没有权限访问哦'
            })
            return Promise.reject('error');
        }

        // -999
        if (res.data.code == 9999) {
            Message({
                type: 'warning',
                showClose: true,
                message: '接口出现问题，请联系管理员！'
            })
        }

        // 10004
        if (res.data.code == 10004) {
            Message({
                type: 'warning',
                showClose: true,
                message: '账号已存在！'
            })
        }

        if (res.data.code == 10002) {
            Message({
                type: 'warning',
                showClose: true,
                message: '用户名或密码不存在！'
            })
        }
        return Promise.reject(res.msg);
    } else {


        return res.data;
    }
}, err => {
    return Promise.reject(err)
})
export default requests
